﻿//-----------------------------------------------------------------------
// <copyright file="Program.cs" company="Panchal Softwares">
//     Copyright (c) Panchal Softwares. All rights reserved.
// </copyright>
// <author>Karn Panchal</author>
//-----------------------------------------------------------------------

/// <summary>
/// Namespace Text Finder GUI.
/// </summary>
namespace PanchalSoftwares.TextFinder.GUI
{
    using System;
    using System.Diagnostics;
    using System.Windows.Forms;

    /// <summary>
    /// Class Program.
    /// </summary>
    public static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        public static void Main()
        {
            if (PriorProcess() != null)
            {
                string text = "Application Already Running.";
                string caption = "Text Finder";
                MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new FormDefault());
            }
        }

        /// <summary>
        /// Priors the process.
        /// </summary>
        /// <returns>
        /// Returns a System.Diagnostics.Process pointing to a pre-existing process with the same name as the current one, if any; or null if the current process is unique.
        /// </returns>
        public static Process PriorProcess()
        {
            Process curr = Process.GetCurrentProcess();
            Process[] procs = Process.GetProcessesByName(curr.ProcessName);
            foreach (Process p in procs)
            {
                if ((p.Id != curr.Id) && (p.MainModule.FileName == curr.MainModule.FileName))
                {
                    return p;
                }
            }

            return null;
        }
    }
}
